//引入项目中全部的全局组件 -- 是个对象
import SvgIcon from './SvgIcon/index.vue'
import Pagination from './Pagination/index.vue'
import Category from './Category/index.vue'
//引入element-plus提供全部图标组件, ElementPlusIconsVue是个对象(key是图标组件的名字,value是图标组件的对象。共292个键值对)
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
//包含所有全局组件(对象)的对象
const allGloablComponent: any = { SvgIcon, Pagination, Category } //KV一致,省略V
//对外暴露插件对象
export default {
  //方法必须叫install -- 会自动注入应用实例对象app
  install(app: any) {
    //注册项目全部的全局组件
    Object.keys(allGloablComponent).forEach((key) => {
      //注册为全局组件
      app.component(key, allGloablComponent[key])
    })
    //将element-plus提供图标注册为全局组件。
    // Object.entries(ElementPlusIconsVue)得到一个二维数组（第一维是292个数组，每个数组包括两个两个元素（KV）作为第二维）。[key, component]是解构第二维数组，然后循环292次逐一注册。
    for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
      app.component(key, component)
    }
  },
}
